package org.zjt.algorithm;

/**
 *
 *
 * 1、同步或异步（synchronous/asynchronous）:不需要等待当前调用返回，通常依靠事件、回调等机制来实现任务间次序关系。
 *
 *
 * 2、阻塞与非阻塞（blocking/non-blocking）： 在进行阻塞操作时，当前线程会处于阻塞状态，无法从事其他任务，只有当条件就绪才能继续，
 *   比如 ServerSocket 新连接建立完毕，或数据读取、写入操作完成；而非阻塞则是不管 IO 操作是否结束，直接返回，相应操作在后台继续处理。
 *
 *
 * 3、异步IO：告知内核启动某个操作，并让内核在整个操作完成之后（包括将数据从内核态复制到用户态）通知我们。写入也实现的异步。
 * 同步非阻塞io：通过轮训得到的事件，我们自己去拷贝数据到用户态。
 *
 * 4、Direct Buffer：如果我们看 Buffer 的方法定义，你会发现它定义了 isDirect() 方法，返回当前 Buffer 是否是 Direct 类型。这是因为 Java 提供了堆内和堆外（Direct）Buffer，我们可以以它的 allocate 或者 allocateDirect 方法直接创建。
 *    长期使用，数据量较大的场景。
 *
 * 5、MappedByteBuffer：它将文件按照指定大小直接映射为内存区域，当程序访问这个内存区域时将直接操作这块儿文件数据，省去了将数据从内核空间向用户空间传输的损耗。我们可以使用FileChannel.map创建 MappedByteBuffer，它本质上也是种 Direct Buffer。
 *    数据量较大的场景，更加快速。
 */

public class IOTest {
}
